package dao

import (
	"time"
)

// 这是 UserRecharge 的全局公开dao对象，被service层调用!
var UserRechargeDao = userRechargeDao{}

// 用户充值记录表
// 这是 user_recharge表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type UserRecharge struct {
	Id        int32     `json:"id" form:"id" db:"id" v:"id"`
	Uid       int32     `json:"uid" form:"uid" db:"uid" v:"uid"`                             // 用户UID
	Amount    int32     `json:"amount" form:"amount" db:"amount" v:"amount"`                 // 充值金额
	Channel   string    `json:"channel" form:"channel" db:"channel" v:"channel"`             // 充值渠道:alipay或wechatpay
	Remark    string    `json:"remark" form:"remark" db:"remark" v:"remark"`                 // 充值备注
	CreatedAt time.Time `json:"created_at" form:"created_at" db:"created_at" v:"created_at"` // 充值时间

}

// 注意:这是 UserRecharge 的私有dao对象，只能在dao层内使用!
type userRechargeDao struct {
	InsertTemplate func(arg UserRecharge) (int64, error)              //插入一条记录
	UpdateTemplate func(arg UserRecharge) (int64, error)              //更新一条记录
	DeleteTemplate func(id int64) (int64, error)                      `arg:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (UserRecharge, error)               `arg:"id"` //根据传入的主键获取一条记录
	List           func(arg UserRechargeList) ([]UserRecharge, error) //模糊分页查询
}

/*
// 这是 user_recharge 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type UserRechargePostman struct {
id
uid
amount
channel
remark
created_at

}*/

// 这是 user_recharge 表的批量请求参数
type UserRechargeReq struct {
	List []UserRecharge `json:"list" form:"list"`
}

// 这是 userRechargeDao.List()方法的请求参数
type UserRechargeList struct {
	Page
}
